//找到字符串中所有字母异位词
/*给定两个字符串 s 和 p，找到 s 中所有 p 的 异位词 的子串，返回这些子串的起始索引。不考虑答案输出的顺序。
*/
class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        int hash1[26] = {0};
        int hash2[26] = {0};
        for (auto& c : p) {
            hash1[c - 'a']++;
        }
        int left = 0, right = 0;
        int count = 0;
        vector<int> arr;
        while (right < s.size()) {
            if (++hash2[s[right] - 'a'] <= hash1[s[right] - 'a'])
                count++;
            if (right - left + 1 > p.size()) {
                if (hash2[s[left] - 'a']-- <= hash1[s[left] - 'a'])
                    count--;
                left++;
            }
            if (count == p.size())
                arr.push_back(left);
            cout << count << ' ';
            right++;
        }
        return arr;
    }
};